/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package GUI;

import GUI.Facturacion.FormularioFactura;
import GUI.Productos.FormularioProducto;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Cursor;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import logica.FacadeCustomer;
import tablasBD.Producto;
/**
 *
 * @author dianacha
 */
public class VentanaAdministrador extends JFrame implements ActionListener {
    
    /*!JLabel con el texto tipo de usuario */
    private JLabel lUsuario;
    /*!JLabel con la imagen del tipo de usuario */
    private JLabel lAdmin;
    /*! Button para procesos de administrador relacionados con productos*/
    private JButton bProductos;
    /*! Button para procesos de administrador relacionados con facturaci&oacute;n*/
    private JButton bFacturacion;
    /*! Button para procesos de administrador relacionados con clientes*/
    private JButton bClientes;
    /*! Button para procesos de administrador relacionados con sucursales*/
    private JButton bSucursales;
    /*! Button para procesos de administrador relacionados con reportes*/
    private JButton bReportes;
    /*! Button para procesos de administrador relacionados con usuarios*/
    private JButton bUsuarios;
    /*! JPanel de ingreso con imagen de fondo*/
    private JPanelConFondo pGeneral;
    /*! ArrayList de String con datos del administrador*/
    //private ArrayList<String> vAdmin;
    private final String nomb;
    
    private FacadeCustomer permisosCustomer;
    FormularioProducto adminProd;
    
    public VentanaAdministrador(String username){
        this.nomb = username;
        setTitle("Admin Cocos - "+ nomb);
        inicializarComponentes();
        organizarComponentes();
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(500, 500); //* H, V
        setResizable(false);
        setVisible(true);
    }

    private void inicializarComponentes() {
        permisosCustomer=new FacadeCustomer();
        permisosCustomer.habilitarPermisosAdmin();
        
        lAdmin = new JLabel(new ImageIcon(getClass().getResource("/GUI/images/administrator-96x96.png" )));
        lAdmin.setBounds(145,80,200,130);
        
        lUsuario = new JLabel("Administrador");
	lUsuario.setFont(new Font("Arial", Font.BOLD, 24));
	lUsuario.setForeground(new Color(78,79,99,190));
        lUsuario.setBounds(150,0,200,130);
        
	bProductos = new JButton(new ImageIcon(getClass().getResource("/GUI/images/shopping_bag96x96.png")));
	configurarBoton(bProductos, 80,200,96,96);
        
        bFacturacion = new JButton(new ImageIcon(getClass().getResource("/GUI/images/cash_register-96x96.png")));
	configurarBoton(bFacturacion,200,200,96,96);
	
	bClientes = new JButton(new ImageIcon(getClass().getResource("/GUI/imagess96x96.png")));
	configurarBoton(bClientes,320,200,96,96);
	
	bSucursales = new JButton(new ImageIcon(getClass().getResource("/GUI/images/sucursal96x96.png")));
	configurarBoton(bSucursales,80,320,96,96);
	
	bReportes = new JButton(new ImageIcon(getClass().getResource("/GUI/images/invoice96x96.png")));
	configurarBoton(bReportes,200,320,96,96);
	
	bUsuarios = new JButton(new ImageIcon(getClass().getResource("/GUI/images/users-96x96.png")));
	configurarBoton(bUsuarios,320,320,96,96);
    }

    private void configurarBoton(JButton boton, int x, int y, int h, int w) {
        boton.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
        boton.setBounds(x, y, h, w);
        boton.setOpaque(false);
	boton.setBorderPainted(false);
	boton.setBackground(new Color(0,0,0,0));
	boton.addActionListener(this);
    }

    private void organizarComponentes() {
        pGeneral = new JPanelConFondo(new ImageIcon(getClass().getResource("/GUI/images/main-background-500x500.jpg")));
	pGeneral.setLayout(null);
        
        pGeneral.add(lUsuario);
	pGeneral.add(lAdmin);
        
        pGeneral.add(bProductos);
        pGeneral.add(bFacturacion);
        pGeneral.add(bClientes);
        pGeneral.add(bSucursales);
        pGeneral.add(bReportes);
        pGeneral.add(bUsuarios);
        
        setLayout(new BorderLayout()); // eC, eF
        add(pGeneral, BorderLayout.CENTER);
    }
    
    @Override
    public void actionPerformed(ActionEvent ae){
        if(ae.getSource()==bProductos){
            iniciarAdminProd();
        }
        if(ae.getSource()==bClientes){
            iniciarAdminClien();
        }
        if(ae.getSource()==bFacturacion){
            iniciarAdminFact();
        }
        if(ae.getSource()==bSucursales){
            iniciarAdminSuc();
        }
        if(ae.getSource()==bReportes){
            iniciarAdminRep();
        }
        if(ae.getSource()==bUsuarios){
            iniciarAdminUser();
        }
    }
    
    public void mostrarProducto(Producto producto){
        adminProd.mostrarProducto(producto);
    }

    private void iniciarAdminProd() {
        //servidor.crearAdminProductos(String tipoUser)
        
        String tipoUser = "admin";//quitar ahora!!!
        boolean[] permisosProductos = permisosCustomer.getPermisosProd();
        
        adminProd = new FormularioProducto(this, true, tipoUser, permisosProductos);
    }

    private void iniciarAdminClien() {
        //servidor.crearAdminClientes(String tipoUser)
        
        String tipoUser = "admin";//quitar ahora!!!
        boolean[] permisosClientes = permisosCustomer.getPermisosClie();
        
        FormularioCliente adminClie = new FormularioCliente(this, true, tipoUser, permisosClientes);
    }

    private void iniciarAdminFact() {
        //servidor.crearAdminFact(String tipoUser)
        
        String tipoUser = "admin";//quitar ahora!!!
        boolean[] permisosFact = permisosCustomer.getPermisosFact();//2
        
        FormularioFactura adminFact = new FormularioFactura(this, true, tipoUser, permisosFact);
    }

    private void iniciarAdminSuc() {
        //servidor.crearAdminSuc(String tipoUser)
        
        String tipoUser = "admin";//quitar ahora!!!
        boolean[] permisosSuc = permisosCustomer.getPermisosSuc();//2
        
        FormularioSucursal adminSuc = new FormularioSucursal(this, true, tipoUser, permisosSuc);
    }

    private void iniciarAdminRep() {
        //servidor.crearAdminRep(String tipoUser)
        
        String tipoUser = "admin";//quitar ahora!!!
        boolean[] permisosRep = permisosCustomer.getPermisosRepo();//2
        
        VentanaReportes adminRep = new VentanaReportes(this, true, tipoUser, permisosRep);
    }

    private void iniciarAdminUser() {
        //servidor.crearAdminUser(String tipoUser)
        
        String tipoUser = "admin";//quitar ahora!!!
        boolean[] permisosUser = permisosCustomer.getPermisosUser();//2
        
        FormularioUsuario adminUser = new FormularioUsuario(this, true, tipoUser, permisosUser);
    }
}
